package num98;

import java.util.ArrayList;
import java.util.LinkedList;

/**
 * @author : DuJiabao
 * @Date : 2021/2/6 16:53
 * @Project : sword-finger-offer
 * @File : null.java
 * @Desc : 中序遍历的操作。使用递归。如果node是空，则直接返回true。
 * 然后递归查找所有左节点，当左节点中存在false，则会返回false，否则继续往下检查。
 * 如果当前结点的val小于或等于上一个结点的val，则返回false
 * 然后将当前结点保存为prev。
 * 然后当右边结点存在false的时候，返回false。否则返回true。
 *
 */
public class Solution2 {
    private TreeNode prev = null;

    public boolean isValidBST(TreeNode root) {
        return recursion(root);
    }

    private boolean recursion(TreeNode node) {
        if (node == null) return true;
        if (!recursion(node.left)) return false;
        if (prev != null && node.val <= prev.val) return false;
        prev = node;
        //if (!recursion(node.right)) return false;
        //else return true;
        return recursion(node.right);
    }
}
